﻿using Microsoft.Practices.EnterpriseLibrary.Logging;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Microsoft.Practices.EnterpriseLibrary.Logging
{
    /// <summary>
    /// Contains builder extensions for Logger wrapper
    /// </summary>
    public static partial class LogX
    {
        /// <summary>
        /// Create a 'Critical' level message TraceEventType.Critical, Priority=1, EventId= 10001, and automatically inlcude HTTPContext, UserContext, and MachineContext
        /// </summary>
        public static LogMessageBuilder Cr
        {
            get
            {
                return Critical;
            }
        }
        /// <summary>
        /// Create a 'Critical' level message TraceEventType.Critical, Priority=1, EventId= 10001, and automatically inlcude HTTPContext, UserContext, and MachineContext
        /// </summary>
        public static LogMessageBuilder Critical
        {
            get
            {
                return Logger.Writer.Critical();
            }
        }


        /// <summary>
        /// Create a 'Error' level message TraceEventType.Error, Priority=2, EventId= 10001, and automatically inlcude HTTPContext, UserContext, and MachineContext
        /// </summary>
        public static LogMessageBuilder Er
        {
            get
            {
                return Error;
            }
        }

        /// <summary>
        /// Create a 'Error' level message TraceEventType.Error, Priority=2, EventId= 10001, and automatically inlcude HTTPContext, UserContext, and MachineContext
        /// </summary>
        public static LogMessageBuilder Error
        {
            get
            {
                return Logger.Writer.Error();
            }
        }

        /// <summary>
        /// Create a 'Warning' level message TraceEventType.Warning, Priority=4, EventId= 40001, and automatically inlcude HTTPContext, UserContext, and MachineContext
        /// </summary>
        public static LogMessageBuilder Wa
        {
            get
            {
                return Logger.Writer.Warning();
            }
        }

        /// <summary>
        /// Create a 'Warning' level message TraceEventType.Warning, Priority=4, EventId= 40001, and automatically inlcude HTTPContext, UserContext, and MachineContext
        /// </summary>
        public static LogMessageBuilder Warning
        {
            get
            {
                return Logger.Writer.Warning();
            }
        }

        /// <summary>
        /// Create an 'Information' level message.  TraceEventType.Information, Priority=8, EventId=
        /// </summary>
        public static LogMessageBuilder In
        {
            get
            {
                return Logger.Writer.Info();
            }
        }

        /// <summary>
        /// Create an 'Information' level message.  TraceEventType.Information, Priority=8, EventId=
        /// </summary>
        public static LogMessageBuilder Info
        {
            get
            {
                return Logger.Writer.Info();
            }
        }

        /// <summary>
        /// Create an 'Verbose' level message.  TraceEventType.Information, Priority=16, EventId=16
        /// </summary>
        public static LogMessageBuilder Ve
        {
            get
            {
                return Logger.Writer.Verbose();
            }
        }
        /// <summary>
        /// Create an 'Verbose' level message.  TraceEventType.Information, Priority=16, EventId=16
        /// </summary>
        public static LogMessageBuilder Dbg
        {
            get
            {
                return Logger.Writer.Verbose();
            }
        }

        /// <summary>
        /// Create an 'Verbose' level message.  TraceEventType.Information, Priority=16, EventId=16
        /// </summary>
        public static LogMessageBuilder Verbose
        {
            get
            {
                return Logger.Writer.Verbose();
            }
        }
    }
}
